<?php

require_once APPPATH.'core/Unit_Test_Abstract.php';

class Disciplina_Utest extends Unit_Test_Abstract{

	public function __construct(){
		parent::__construct();
	}

	public function index(){

		$dados = array(
				'title' => 'Teste Unitário - Disciplinas '
		);

		// If somente para verificar se a requisição vem do formulário
		if ($this->input->post('codigo')){
			$this->executa_teste();
			$dados ['report'] = $this->unit->report();
		}

		$this->load->view('templates/cabecalho', $dados);
		$this->load->view('disciplina/disciplina_utest_view', $dados);
		$this->load->view('templates/rodape');

	}

	private function executa_teste(){
		$this->test__construct();
		$this->test_define_disciplina();
		$this->test_get();
		$this->test_update_disciplina();
		$this->test_delete_disciplina($this->input->post('codigo'));
		
	}

	private function test__construct()
	{
		$this->load->model("Disciplina_Model",'',TRUE);
		$this->run( $this->Disciplina_Model === NULL, false, 'test__construct', 'Testa o construtor');
	}

	private function test_define_disciplina(){
		$this->run( $this->Disciplina_Model->define_disciplina(), TRUE, 'test_define_disciplina', 'Testa a criação de novas Disicplinas');
	}
	
	private function test_get(){
		$this->run(gettype($this->Disciplina_Model->get()), 'array', 'test_get', 'Testa a recuperação das Disciplinas');
	}
	
	private function test_update_disciplina(){
		$this->run($this->Disciplina_Model->update_disciplina(), TRUE, 'test_update_disciplina', 'Testa a atualização de uma Disicplina');
	}
	private function test_delete_disciplina($pk){
		$this->run($this->Disciplina_Model->apaga($pk), 'is_null', 'test_delete_disciplina '.$pk, 'Testa a remoção de uma Disicplina');
	}
}
?>